By default OpenBSD includes the BSD 4.4 kernel security
feature that disable access to the /dev/mem
device when in
multi-users mode. But XFree86 servers can take advantage (or require)
linear access to the display memory.
The P9000, Mach64 and AGX servers require linear memory access, other accelerated servers can take advantage of it, but do not require it. Some drivers in the SVGA server require linear memory access too, notably the Matrox driver.
The preferred way to allow XFree86 to access linear memory is to use the aperture driver
Ths step is highly dependent from your exact operating system version:
/etc/rc.local
:
KERNDIR=/usr/lkm
if [ -f ${KERNDIR}/ap.o ]; then
modload -o ${KERNDIR}/ap -e ap -p \
${KERNDIR}/apinstall ${KERNDIR}/ap.o
fi
/etc/rc.securelevel
./MAKEDEV std
in /dev
. Edit
/etc/sysctl.conf
to set the variable
machdep.allowaperture to 1.
After doing that, reboot your system. XFree86 will auto-detect the aperture driver if available.
Warning: if you boot another kernel than /bsd
,
loadable kernel modules can crash your system. Always boot in
single user mode when you want to run another kernel.
Caveat: the aperture driver only allows one access at a time (so that the system is in the same security state once X is launched). This means that if you run multiple servers on multiples VT, only the first one will have linear memory access. Use 'option INSECURE' if you need more that one X server at a time.
Another (less recommended) way to enable linear memory access is to
disable the kernel security feature by adding ``option INSECURE'' in
your kernel configuration file and build a new kernel. In OpenBSD 2.2
and later, you will also need to comment out the line initializing
securelevel
to 1 in /etc/rc.securelevel
.